package top.lywivan.dp;

/**
 * @desc
 * @author:ivan.liu
 */
public class BackPackTest {

    public int dp(int weight,int[] weights,int[] values,int n){
        int[][] dp=new int[n+1][weight+1];
        for(int i=0;i<=n;i++){
            dp[i][0]=0;
        }
        for(int i=0;i<=weight;i++){
            dp[0][i]=0;
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=weight;j++){
                if(weights[i-1]>j){
                    dp[i][j]=dp[i-1][j];
                }else{
                    dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-weights[i-1]]+values[i-1]);
                }
            }
        }
        return dp[n][weight];
    }

    /**
     * 测试用例
     * @param args
     */
    public static void main(String[] args) {
        int N = 3, W = 5; // 物品的总数，背包能容纳的总重量
        int[] w = {3, 2, 1}; // 物品的重量
        int[] v = {5, 2, 3}; // 物品的价值
        System.out.println(new BackPackTest().dp(W,w,v,N));
    }
}
